// import 'dart:async';

// import 'package:play_lab/core/helper/string_format_helper.dart';
// import 'package:play_lab/core/utils/url_container.dart';
// import 'package:socket_io_client/socket_io_client.dart' as io;

// class SocketService {
//   SocketService._internal();

//   static final SocketService _instance = SocketService._internal();

//   factory SocketService() => _instance;
//   // Socket.IO client
//   io.Socket? _socket;
//   bool _isConnected = false;
//   // Connection status
//   bool get isConnected => _socket?.connected ?? false;
//   StreamSocket streamSocket = StreamSocket();
//   //create server

//   // Initialize the socket connection
//   void initSocket() {
//     if (_socket != null) return; // Already initialized

//     _socket = io.io(UrlContainer.socketUrl, <String, dynamic>{
//       'transports': ['websocket'],
//     }
//         // io.OptionBuilder()
//         //     .setTransports(['websocket']) // Force WebSocket only
//         //     .enableReconnection() // Enable automatic reconnection
//         //     .setReconnectionAttempts(5) // Max 5 attempts
//         //     .setReconnectionDelay(1000) // 1 second delay between attempts
//         //     .setTimeout(30000) // 30s connection timeout
//         //     .setQuery({'platform': 'flutter'}) // Optional query params
//         //     .build(),
//         );

//     // Setup event listeners
//     _setupEventListeners();
//     // _socket?.onConnect((_) {
//     //   printX('Socket connected: ${_socket?.id}');
//     // });

//     // _socket?.onDisconnect((_) {
//     //   printX('Socket disconnected');
//     // });

//     // _socket?.onError((data) {
//     //   printX('Socket error: $data ${DateTime.now().toIso8601String()}');
//     // });
//     _socket?.connect();
//     // _socket?.on('event', (data) => streamSocket.addResponse(data));
//   }

//   void _setupEventListeners() {
//     if (_socket == null) return;

//     _socket!
//       ..onConnect((_) {
//         _isConnected = true;
//         printX('Connected to server. Socket ID: ${_socket?.id}');
//       })
//       ..onDisconnect((_) {
//         _isConnected = false;
//         printX('Disconnected from server');
//       })
//       ..onError((err) {
//         printX('Socket error: $err');
//       })
//       ..onConnectError((err) {
//         printX('Connection error: $err');
//       })
//       ..onReconnectError((err) {
//         printX('Reconnection error: $err');
//       })
//       ..onReconnectFailed((_) {
//         printX('Reconnection failed');
//       });
//   }

                                     // Subscribe to an event
//   void subscribe(String eventName, Function(dynamic) callback) {
//     _socket?.on(eventName, callback);
//   }
                                                                                                                                                                                                                                                                                                                                                                                                                                           
//   // Unsubscribe from an event                            
//   void unsubscribe(String eventName) {                          
//     _socket?.off(eventName);
//   } 
                                                                                                                                                       
//   // Emit an event to the server                                                                                                   
//   void emit(String eventName, dynamic data) {
//     _socket?.emit(eventName, data);            
//   }
                                                                                                                                                                                                                                                                                                                                                                                                                                 
//   // Clean up resources
//   void dispose() {
//     _socket?.disconnect();
//     _socket?.clearListeners();                                                
//     _socket?.close();                                                                    
//     _socket = null;                    
//   }                         
// }                               
                                                                                                                                                                        
// // STEP1:  Stream setup                              
// class StreamSocket {
//   final _socketResponse = StreamController<String>();

//   void Function(String) get addResponse => _socketResponse.sink.add;

//   Stream<String> get getResponse => _socketResponse.stream;

//   void dispose() {
//     _socketResponse.close();                                                    
//   }
// }
                                                                                                                                                                                                                                                                             